<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>闭包</title>
</head>

<body>
  <script>
    // ============================== 闭包 ==============================
    // 1. 闭包 : 内层函数 + 访问外层函数变量
    /* function outer() {
      const a=10
      function fn() {
        console.log(a) 
      }
      fn()
    }
    outer() */

    // 2. 闭包的应用： 实现数据的私有，防止全局变量污染

    // 统计函数的调用次数
    /* let count = 0
    function fn() {
      count++
      console.log(`函数被调用${count}次`)
    }
 */

    

    // 3. 闭包的写法  统计函数的调用次数
   function outer() {
      let count = 0
      function fn() {
        count++
        console.log(`函数被调用${count}次`)
      }
      return fn
   }
   let res=outer()
   console.log(res)
   res()
    // 4. 闭包存在的问题： 可能会造成内存泄漏
    res=null  //解决内存泄露的问题
  </script>
</body>

</html>